mscJNeuralNet.trainingAlgorithms
Class RPropWeightDecay

java.lang.Object
  extended bymscJNeuralNet.trainingAlgorithms.AbstractTrainingAlgorithm
      extended bymscJNeuralNet.trainingAlgorithms.RPropWeightDecay
All Implemented Interfaces:
INetTrainingAlgorithm, observerPattern.Observable

public class RPropWeightDecay
extends AbstractTrainingAlgorithm

Das Resilient Backpropagation Lernverfahren nach Riedmiller mit Weightdecay-Term.
Implentiert nach der Arbeit Martin Riedmiller, RProp - Description and Implementation Details, 1994

Das Resilient-Propagation Verfahren kombiniert das SuperSAB und das QuickProp Verfahren, benutzt also eine Art variabler Lernschrittweite (hier der einfachheithalber Alpha ij genannt. In der Literatur und im Kode heisst es Delta ij) für jedes einzelne Gewicht und ändert diese nach dem Newtonschen Abstiegsverfahren. Damit ist das RProp Lernverfahren eines der schnellsten bekannten Lernverfahren. Diese Version wurde um einen Weightdecay-Term erweitert, der bei jedem Lernschritt vom aktuellen Gewichtswert einen Teil des alten Gewichtsbetrages subtrahiert.

Die Aktualisierung der Kantengewichte wird wie folgt berechnet:

   Gradientenrichtung = Gradient Wij * Gradient WijAlt
   
   Falls Gradientenrichtung > 0
     Alpha ij = Math.min(Alpha ij * Alpha Plus, Alpha Max)
 	 Falls Gradientenrichtung < 0
     Alpha ij = Math.max(Alpha ij * Alpha Minus, Alpha Min)
   
   Falls Gradient Wij > 0
     Delta Wij = -1 * Alpha ij
   Falls Gradient Wij < 0
     Delta Wij = Alpha ij
   Falls Gradient Wij = 0
     Delta Wij = 0
   
   Wij += Delta Wij - Weightdecay * WijAlt
 

Created on 03.06.2004

Version:
05.06.2004
Author:
M. Serhat Cinar
See Also:
INetTrainingAlgorithm, AbstractTrainingAlgorithm, mscJNeuralNet.trainingAlgorithms

Constructor Summary
RPropWeightDecay()
           
 
Method Summary
 void applyWeightUpdate(int pOutputting, int pInputting)
          Derzeit leer.
 java.lang.String getAlgorithmName()
          Liefert den String "RProp + Weight decay" zurück.
 double[] getDefaultLearningParameters()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Delta Plus Faktor zum Erhöhen der variablen Lernschrittweite 1 Delta Minus Faktor zum Verkleinern der variablen Lernschrittweite 2 Delta Max Maximale variable Lernschrittweite 3 Delta Min Minimale variable Lernschrittweite 4 Initial Delta Initialwert für alle variablen Lernschrittweiten
 java.lang.String[] getLearningParameterNames()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Delta Plus Faktor zum Erhöhen der variablen Lernschrittweite 1 Delta Minus Faktor zum Verkleinern der variablen Lernschrittweite 2 Delta Max Maximale variable Lernschrittweite 3 Delta Min Minimale variable Lernschrittweite 4 Initial Delta Initialwert für alle variablen Lernschrittweiten
 double[] getLearningParameters()
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Delta Plus Faktor zum Erhöhen der variablen Lernschrittweite 1 Delta Minus Faktor zum Verkleinern der variablen Lernschrittweite 2 Delta Max Maximale variable Lernschrittweite 3 Delta Min Minimale variable Lernschrittweite 4 Initial Delta Initialwert für alle variablen Lernschrittweiten
 void init()
          Derzeit leer.
 void setLearningParameters(double[] pLearningParameters)
          Dieses Lernverfahren unterstützt folgende Parameter:
Index Bezeichnung Funktion 0 Delta Plus Faktor zum Erhöhen der variablen Lernschrittweite 1 Delta Minus Faktor zum Verkleinern der variablen Lernschrittweite 2 Delta Max Maximale variable Lernschrittweite 3 Delta Min Minimale variable Lernschrittweite 4 Initial Delta Initialwert für alle variablen Lernschrittweiten Am Ende der Methode werden die Observer benachrichtigt.
 java.lang.String toString()
           
 
Methods inherited from class mscJNeuralNet.trainingAlgorithms.AbstractTrainingAlgorithm
getActualGradients, getCycle, getNet, getObserverManager, setActualGradients, setCycle, setNet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RPropWeightDecay

public RPropWeightDecay()
Method Detail

init

public void init()
Description copied from class: AbstractTrainingAlgorithm
Derzeit leer.

Specified by:
init in interface INetTrainingAlgorithm
Overrides:
init in class AbstractTrainingAlgorithm
See Also:
INetTrainingAlgorithm.init()

applyWeightUpdate

public void applyWeightUpdate(int pOutputting,
                              int pInputting)
Description copied from class: AbstractTrainingAlgorithm
Derzeit leer.

Specified by:
applyWeightUpdate in interface INetTrainingAlgorithm
Overrides:
applyWeightUpdate in class AbstractTrainingAlgorithm
See Also:
INetTrainingAlgorithm.applyWeightUpdate(int, int)

setLearningParameters

public void setLearningParameters(double[] pLearningParameters)
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Delta Plus    Faktor zum Erhöhen der variablen Lernschrittweite
   1    Delta Minus   Faktor zum Verkleinern der variablen Lernschrittweite
   2    Delta Max     Maximale variable Lernschrittweite
   3    Delta Min     Minimale variable Lernschrittweite
   4    Initial Delta Initialwert für alle variablen Lernschrittweiten
 
Am Ende der Methode werden die Observer benachrichtigt.

Parameters:
pLearningParameters - Lernparameter für das Lernverfahren fest.
See Also:
INetTrainingAlgorithm.setLearningParameters(double[])

getLearningParameters

public double[] getLearningParameters()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Delta Plus    Faktor zum Erhöhen der variablen Lernschrittweite
   1    Delta Minus   Faktor zum Verkleinern der variablen Lernschrittweite
   2    Delta Max     Maximale variable Lernschrittweite
   3    Delta Min     Minimale variable Lernschrittweite
   4    Initial Delta Initialwert für alle variablen Lernschrittweiten
 

Returns:
Aktuelle Lernparameter für das Lernverfahren.
See Also:
INetTrainingAlgorithm.getLearningParameters()

getLearningParameterNames

public java.lang.String[] getLearningParameterNames()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Delta Plus    Faktor zum Erhöhen der variablen Lernschrittweite
   1    Delta Minus   Faktor zum Verkleinern der variablen Lernschrittweite
   2    Delta Max     Maximale variable Lernschrittweite
   3    Delta Min     Minimale variable Lernschrittweite
   4    Initial Delta Initialwert für alle variablen Lernschrittweiten
 

Returns:
Die Bezeichnungen für die Lernparameter.
See Also:
INetTrainingAlgorithm.getLearningParameterNames()

getDefaultLearningParameters

public double[] getDefaultLearningParameters()
Dieses Lernverfahren unterstützt folgende Parameter:
 Index  Bezeichnung   Funktion
   0    Delta Plus    Faktor zum Erhöhen der variablen Lernschrittweite
   1    Delta Minus   Faktor zum Verkleinern der variablen Lernschrittweite
   2    Delta Max     Maximale variable Lernschrittweite
   3    Delta Min     Minimale variable Lernschrittweite
   4    Initial Delta Initialwert für alle variablen Lernschrittweiten
 

Returns:
Initialwerte für die Lernparameter des Lernverfahrens.
See Also:
INetTrainingAlgorithm.getDefaultLearningParameters()

getAlgorithmName

public java.lang.String getAlgorithmName()
Liefert den String "RProp + Weight decay" zurück.

Returns:
Namen des Lernverfahrens.
See Also:
INetTrainingAlgorithm.getAlgorithmName()

toString

public java.lang.String toString()